package com.turing.post.report.util;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

@Remote
@Local
public interface IncomeDaySettlementDao {

	/**
	 * 创建商户、销售机构日收益汇总记录
	 * 
	 * @param ids
	 * @throws PCPSApplicationException
	 */
	public void insert(IncomeDaySettlement ids) throws PCPSApplicationException;

	/**
	 * 修改商户、销售机构日收益汇总记录
	 * 
	 * @param ids
	 * @throws PCPSApplicationException
	 */
	public void update(IncomeDaySettlement ids) throws PCPSApplicationException;

	/**
	 * 删除某发卡商某日某商户所有的日结数据
	 * 
	 * @param issueCompanyNo
	 *            发卡商号
	 * @param merchantNo
	 *            商户号
	 * @param tranDate
	 *            帐务日期
	 */
	public void removeAllIncomeDaySettlementByMerchantNo(String issueCompanyNo,
			String merchantNo, Date tranDate);

	/**
	 * 获取某商户某日的扎帐集合
	 * 
	 * @param merchantNo
	 * @param tranDate
	 */
	public List<IncomeDaySettlement> getIncomeDaySettlementByMerchantNoAndTrandate(
			String merchantNo, Date tranDate);
	
	/**
	 * 获取某商户某时间段的扎帐集合
	 * 
	 * @param merchantNo
	  * @param startDate
	 *            开始日期
	 * @param endDate
	 *            结束日期
	 */
	public List<IncomeDaySettlement> getIncomeDaySettlementByMerchantNoAndTrandate(
			String merchantNo, Date startdate,Date enddate);

	/**
	 * 获取某商户某日的消费合计
	 * 
	 * @param merchantNo
	 * @param tranDate
	 */
	public BigDecimal getTotalAmountByMerchantNoAndTrandate(String merchantNo,
			Date tranDate);

	/**
	 * 渠道收入统计表(内容)---报表
	 * 
	 * @param startDate
	 *            起始日期
	 * @param endDate
	 *            终止日期
	 * @param return
	 *            渠道收入统计表数组对象
	 */
	public List<Object[]> getIncomeDaySettlementTotalAll(PCPSWebInput webInput,
			String branchNoCond, String startDate, String endDate);

	/**
	 * 渠道收入汇总表(内容)---报表
	 * 
	 * @param startDate
	 *            起始日期
	 * @param endDate
	 *            终止日期
	 * @param return
	 *            渠道收入汇总表数组对象
	 */
	public List<Object[]> getIncomeDaySettlementCountAll(PCPSWebInput webInput,
			String branchNoCond, String startDate, String endDate);

	/**
	 * 渠道收入汇总表(表头)-----报表
	 * 
	 * @param startDate
	 *            起始日期
	 * @param endDate
	 *            终止日期
	 * @param return
	 *            渠道收入汇总表数组对象
	 */
	public List<Object[]> getIncomeDaySettlementTotalAllTitle(
			PCPSWebInput webInput, String branchNoCond, String startDate,
			String endDate);

	/**
	 * 渠道收入汇总表(内容)---报表
	 * 
	 * @param issueCompanyNo
	 *            发卡商编号
	 * @param saleBno
	 *            销售商号
	 * @param startDate
	 *            起始日期
	 * @param endDate
	 *            终止日期
	 * @param return
	 *            渠道收入汇总表数组对象
	 */
	public List<Object[]> getIncomeDaySettlementTotalBySaleBranchno(
			PCPSWebInput webInput, String branchNoCond, String startDate,
			String endDate);

	/**
	 * 渠道收入汇总表(表头)-----报表
	 * 
	 * @param issueCompanyNo
	 *            发卡商编号
	 * @param saleBno
	 *            销售商号
	 * @param startDate
	 *            起始日期
	 * @param endDate
	 *            终止日期
	 * @param return
	 *            渠道收入汇总表数组对象
	 */
	public List<Object[]> getIncomeDaySettlementTotalBySaleBranchnoTitle(
			PCPSWebInput webInput, String branchNoCond, String startDate,
			String endDate);

	/**
	 * 各渠道开发单位交易额汇总表
	 * 
	 * @param webInput
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public List<Object[]> getEachUnitVolumeTransactionsSummary(
			PCPSWebInput webInput, String startDate, String endDate);

	/**
	 * 全省收入结算统计
	 * 
	 * @param incomeBranchID
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public List<Object[]> getIncomeDaySettlementStatistics(
			BigInteger incomeBranchID, String startDate, String endDate);

	/**
	 * 全省收入结算单
	 * 
	 * @param incomeBranchID
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public List<Object[]> getIncomeSettlementStatistics(
			BigInteger incomeBranchID, String startDate, String endDate);

	/**
	 * 分公司渠道消费汇总表
	 * 
	 * @param incomeBranchID
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public List<Object[]> getIncomeSettlementConsumeData(String brchNo,
			String startDate, String endDate);

}
